Add gtk_places_sidebar_set_current_uri()
authorFederico Mena Quintero <federico@gnome.org>
Wed, 7 Sep 2011 22:55:21 +0000 (17:55 -0500)
committerFederico Mena Quintero <federico@gnome.org>
Tue, 4 Sep 2012 01:38:42 +0000 (20:38 -0500)
And remove the code that updated the current URI automatically based
on a NautilusWindow.

Signed-off-by: Federico Mena Quintero <federico@gnome.org>
gtk/gtkplacessidebar.c
gtk/gtkplacessidebar.h

index a0880eb268994f1b649ec80b7ac3043cb2f91a24..4ee783898f840a5fdac050a7d68a9e9188acfc22 100644 (file)
@@ -970,42 +970,6 @@ desktop_setting_changed_callback (gpointer user_data)
        update_places (sidebar);
 }
 
-static void
-loading_uri_callback (NautilusWindow *window,
-                     char *location,
-                     GtkPlacesSidebar *sidebar)
-{
-       GtkTreeSelection *selection;
-       GtkTreeIter      iter;
-       gboolean         valid;
-       char             *uri;
-
-        if (strcmp (sidebar->uri, location) != 0) {
-               g_free (sidebar->uri);
-                sidebar->uri = g_strdup (location);
-
-               /* set selection if any place matches location */
-               selection = gtk_tree_view_get_selection (sidebar->tree_view);
-               gtk_tree_selection_unselect_all (selection);
-               valid = gtk_tree_model_get_iter_first (sidebar->filter_model, &iter);
-
-               while (valid) {
-                       gtk_tree_model_get (sidebar->filter_model, &iter,
-                                           PLACES_SIDEBAR_COLUMN_URI, &uri,
-                                           -1);
-                       if (uri != NULL) {
-                               if (strcmp (uri, location) == 0) {
-                                       g_free (uri);
-                                       gtk_tree_selection_select_iter (selection, &iter);
-                                       break;
-                               }
-                               g_free (uri);
-                       }
-                       valid = gtk_tree_model_iter_next (sidebar->filter_model, &iter);
-               }
-       }
-}
-
 /* Computes the appropriate row and position for dropping */
 static gboolean
 compute_drop_position (GtkTreeView *tree_view,
@@ -3340,10 +3304,6 @@ gtk_places_sidebar_set_parent_window (GtkPlacesSidebar *sidebar,
                                          G_CALLBACK (update_places),
                                          sidebar);
 
-       g_signal_connect_object (window, "loading_uri",
-                                G_CALLBACK (loading_uri_callback),
-                                sidebar, 0);
-
        g_signal_connect_swapped (nautilus_preferences, "changed::" NAUTILUS_PREFERENCES_ALWAYS_USE_BROWSER,
                                  G_CALLBACK (bookmarks_popup_menu_detach_cb), sidebar);
 
@@ -3428,3 +3388,46 @@ nautilus_shortcuts_model_filter_new (GtkPlacesSidebar *sidebar,
 
        return GTK_TREE_MODEL (model);
 }
+
+/**
+ * gtk_places_sidebar_set_current_uri:
+ * @sidebar: a places sidebar
+ * @uri: URI to select, or #NULL for no current path
+ *
+ * Sets the URI that is being shown in the widgets surrounding the @sidebar.  In turn,
+ * it will highlight that URI if it is being shown in the list of places, or it will
+ * unhighlight everything if the URI is not among the places in the list.
+ */
+void
+gtk_places_sidebar_set_current_uri (GtkPlacesSidebar *sidebar, const char *uri)
+{
+       GtkTreeSelection *selection;
+       GtkTreeIter      iter;
+       gboolean         valid;
+       char             *iter_uri;
+
+        if (strcmp (sidebar->uri, uri) != 0) {
+               g_free (sidebar->uri);
+                sidebar->uri = g_strdup (uri);
+
+               /* set selection if any place matches the uri */
+               selection = gtk_tree_view_get_selection (sidebar->tree_view);
+               gtk_tree_selection_unselect_all (selection);
+               valid = gtk_tree_model_get_iter_first (sidebar->filter_model, &iter);
+
+               while (valid) {
+                       gtk_tree_model_get (sidebar->filter_model, &iter,
+                                           PLACES_SIDEBAR_COLUMN_URI, &iter_uri,
+                                           -1);
+                       if (iter_uri != NULL) {
+                               if (strcmp (iter_uri, uri) == 0) {
+                                       g_free (iter_uri);
+                                       gtk_tree_selection_select_iter (selection, &iter);
+                                       break;
+                               }
+                               g_free (iter_uri);
+                       }
+                       valid = gtk_tree_model_iter_next (sidebar->filter_model, &iter);
+               }
+       }
+}
index 2e5aee5b3dc36ba7bb1ebf4ef7880bc8b3690bd7..57057f8b76d40ab082f1cffcd551a5392703d568 100644 (file)
 typedef struct _GtkPlacesSidebar GtkPlacesSidebar;
 typedef struct _GtkPlacesSidebarClass GtkPlacesSidebarClass;
 
-
 GType gtk_places_sidebar_get_type (void);
 GtkWidget *gtk_places_sidebar_new (void);
 
+/* FIXME: add an "uri" property so this can be set via g_object_set() */
+void gtk_places_sidebar_set_current_uri (GtkPlacesSidebar *sidebar, const char *uri);
+
 G_END_DECLS
 
 #endif /* __GTK_PLACES_SIDEBAR_H__ */